const selectSort = (nums: Array<number>) => {
  // 缓存数组的长度
  const len = nums.length;
  // 定义 minIndex，缓存当前区间最小值的索引，注意是索引
  let minIndex;
  for (let index = 0; index < len - 1; index++) {
    // 初始化 minIndex 为当前区间第一个元素
    minIndex = index;
    // 遍历区间,找出区间最小值的索引
    for (let j = index; j < len; j++) {
      //  若 j 处的数据项比当前最小值还要小，则更新最小值索引为 j
      if (nums[j] < nums[minIndex]) {
        minIndex = j;
      }
    }
    // 如果 minIndex 对应元素不是目前的头部元素，则交换两者
    if (index != minIndex) {
      [nums[index], nums[minIndex]] = [nums[minIndex], nums[index]];
    }
  }

  return nums;
};
const testNums1 = [5, 4, 3, 2, 1];
console.log(selectSort(testNums1));
